
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using AEL.APU;
using AEL.BOD;
using AEL.COM;
using AEL.INT;
using BEL;
    
    namespace DEL.APU
    {
    /// <summary>
    /// Acceso a la base de datos
    /// Modulo:Proyectos 
    /// Tabla:Apu_Lugar
    /// </summary>
    public class DO_Apu_Lugar
    {
    #region Adapter
        private static CEL.APU.DO_Apu_Lugar _adpApu_Lugar;
        private static CEL.APU.DO_Apu_Lugar adpApu_Lugar
        {
            get
            {
                if (_adpApu_Lugar == null)
                    _adpApu_Lugar = new CEL.APU.DO_Apu_Lugar();
                return _adpApu_Lugar;
            }
        }
    #endregion
    
    #region Operaciones con datos
    
    public static string Insert(Scope s, Apu_Lugar oApu_Lugar)
    {
        string resultado;// Inserto los objetos
        try
        {
            adpApu_Lugar.Adapter.BeginTransaction();

            //obtengo una lista de los lugares la clase que tiene ese articulo
            List<Apu_Lugar> listLugar = adpApu_Lugar.GetByProvincia(s, oApu_Lugar.Apu_Provincia_Id);

            foreach (Apu_Lugar v_lugar in listLugar)
            {
                if (v_lugar.Predeterminada == "S" && oApu_Lugar.Predeterminada == "S")
                {
                        Apu_Lugar new_apu_lugar = v_lugar;
                        new_apu_lugar.Predeterminada = "N";
                        adpApu_Lugar.Update(s, new_apu_lugar, v_lugar);
                }
            }
                resultado = adpApu_Lugar.Insert(s, oApu_Lugar);

            adpApu_Lugar.Adapter.CommitTransaction();
        }
        catch (Exception e)
        {
            adpApu_Lugar.Adapter.RollbackTransaction();
            throw (e);
        }
        return resultado;
    }
        public static int Update(Scope s, Apu_Lugar newApu_Lugar, Apu_Lugar oApu_Lugar)
    {
        int resultado;

        adpApu_Lugar.Adapter.BeginTransaction();
        
        //obtengo una lista de los lugares la clase que tiene ese articulo
        List<Apu_Lugar> listLugar = adpApu_Lugar.GetByProvincia(s, newApu_Lugar.Apu_Provincia_Id);

        foreach (Apu_Lugar v_lugar in listLugar)
        {
            if (v_lugar.Predeterminada == "S" && newApu_Lugar.Predeterminada == "S")
            {
                Apu_Lugar new_apu_lugar = v_lugar;
                new_apu_lugar.Predeterminada = "N";
                adpApu_Lugar.Update(s, new_apu_lugar, v_lugar);
            }
        }
            resultado = adpApu_Lugar.Update(s, newApu_Lugar, oApu_Lugar);

        resultado = 0;

        return resultado;
    }
    #endregion
    }
    }
